package cn.yang.domain.activity.service;

import cn.yang.domain.activity.model.entity.*;

/**
 * @version v1.0
 * @ClassName: cn.yang.domain.activity.service
 * @Description: TODO
 * @Author: YJ
 */
public interface IRaffleActivityAccountQuotaService {
    /**
     * 以sku创建抽奖活动订单，获得参与抽奖资格（可消耗的次数）
     *
     * @param activityShopCartEntity 活动sku实体，通过sku领取活动
     * @return 活动参与记录实体
     */
    ActivityOrderEntity createRaffleActivityOrder(ActivityShopCartEntity activityShopCartEntity);

    /**
     * 以sku创建充值订单，给用户增加抽奖次数
     * <p>
     * 1. 在打卡，签到，分享，对话，积分兑换 等行为动作下，创建出活动订单，给用户的活动账户【日，月】充值可用的抽奖次数
     * 2. 对于用户可获得的抽奖次数，比如首次进来就有一次，则是有赖于运营配置的动作，在前端页面上，用户点击后，可以获得一次抽奖次数
     *
     * @param skuRechargeEntity 活动商品充值实体对象
     * @return 活动ID
     */
    UnpaidActivityOrderEntity createOrder(SkuRechargeEntity skuRechargeEntity);

    void updateOrder(DeliveryOrderEntity deliveryOrderEntity);

    Integer queryRaffleActivityAccountDayPartakeCount(String userId, Long activityId);

    ActivityAccountEntity queryRaffleActivityEntity(String userId, Long activityId);

    Integer queryRaffleActivityAccountPartakeCount(String userId, Long activityId);
}
